<?php

include_once 'db.php';
include_once 'class.krumo.php';
include_once 'simpleimage.php';
include_once 'crud.php';

/**
 * Manejador de inmuebles
 *
 * @author anyul
 */
class inmueble extends db implements crud {

    private $imagen = null;

    public function borrar($id) {
        $fotos_inmueble = $this->delete("fotosinmueble", array("inmueble" => $id));
        if ($fotos_inmueble['suceed']) {
            $resultado = $this->delete("inmueble", array("id" => $id));
        } else {
            trigger_error($fotos_inmueble['stats']['error']);    
        }
        return $resultado;
    }

    public function editar($data, $id) {
        $this->imagen = new SimpleImage();
        unset($data['inmueble']['idImagenesInmueble']);
        $exito = $this->update("inmueble", $data['inmueble'], array("id" => $id));
        if ($exito['suceed']) {
            $inmueble_id = $id;
            if ($inmueble_id > 0) {
                // <editor-fold defaultstate="collapsed" desc="manejo de imagenes">
                if (count($data['fotos']) > 0) {
                    foreach ($data['fotos'] as $indice => $imagen) {
                        if ($imagen['error'] == 0) {
                            $nombre_imagen = "inmueble_" . $inmueble_id . "-" . substr($indice, 4, 1) . ".jpg";
                            $exito_imagen = move_uploaded_file($imagen['tmp_name'], '../images/inmuebles/' . $nombre_imagen);
                            if ($exito_imagen) {
                                $archivo = '../images/inmuebles/' . $nombre_imagen;
                                $marca_de_agua = '../images/logo.gif';
                                $destino = $archivo;
                                chmod($archivo, 0744);
                                $this->imagen->load($archivo);
                                $this->imagen->resize(533, 400);
                                $this->imagen->save($archivo);
                                $this->imagen->merge($archivo, $marca_de_agua, $destino);
                                // <editor-fold defaultstate="collapsed" desc="insertar imágenes en bd">
                                $datos_imagen = array();
                                $datos_imagen['titulo'] = $indice;
                                $datos_imagen['tipofoto'] = (substr($indice, 4, 1) == 1) ? 1 : 2;
                                $datos_imagen['url'] = $nombre_imagen;
                                $datos_imagen['inmueble'] = $inmueble_id;
                                $insert_pic = $this->insert("fotosinmueble", $datos_imagen);
                                // </editor-fold>
                                if (!$insert_pic['suceed']) {
                                    trigger_error("No se pudo guardar la imagen - Detalle:" . var_export($insert_pic, 1));
                                }
                            }
                        } elseif ($imagen['error'] == 4) {
                            //TODO nada
                        } else {
                            trigger_error("no se pudo cargar la foto $indice -Detalle:" . var_export($imagen, 1));
                        }
                    }
                }
                // </editor-fold>
            } else {
                trigger_error("No se pudo guardar correctamente el inmueble");
            }
        } else {
//            var_export($exito);
            trigger_error("no se pudo guardar correctamente el inmueble:" . var_export($exito, 1));
        }

        return $exito;
    }

    public function registrar($data) {
        $this->imagen = new SimpleImage();
        $exito = $this->insert("inmueble", $data['inmueble']);
        if ($exito['suceed'] && $exito['insert_id'] > 0) {
            $inmueble_id = $exito['insert_id'];
            if ($inmueble_id > 0) {
                // <editor-fold defaultstate="collapsed" desc="manejo de imagenes">
                foreach ($data['fotos'] as $indice => $imagen) {
                    if ($imagen['error'] == 0) {
                        $nombre_imagen = "inmueble_" . $inmueble_id . "-" . substr($indice, 4, 1) . ".jpg";
                        $exito_imagen = move_uploaded_file($imagen['tmp_name'], '../images/inmuebles/' . $nombre_imagen);
                        if ($exito_imagen) {
                            $archivo = '../images/inmuebles/' . $nombre_imagen;
                            $marca_de_agua = '../images/logo.gif';
                            $destino = $archivo;
                            chmod($archivo, 0744);
                            $this->imagen->load($archivo);
                            $this->imagen->resize(533, 400);
                            $this->imagen->save($archivo);
                            $this->imagen->merge($archivo, $marca_de_agua, $destino);
                            // <editor-fold defaultstate="collapsed" desc="insertar imágenes en bd">
                            $datos_imagen = array();
                            $datos_imagen['titulo'] = $indice;
                            $datos_imagen['tipofoto'] = (substr($indice, 4, 1) == 1) ? 1 : 2;
                            $datos_imagen['url'] = $nombre_imagen;
                            $datos_imagen['inmueble'] = $inmueble_id;
                            $insert_pic = $this->insert("fotosinmueble", $datos_imagen);
                            // </editor-fold>
                            if (!$insert_pic['suceed']) {
                                trigger_error("No se pudo guardar la imagen - Detalle:" . var_export($insert_pic, 1));
                            }
                        }
                    } elseif ($imagen['error'] == 4) {
                        //no se cargó ninguna imagen
                    } else {

                        trigger_error("no se pudo cargar la foto. Detalle:" . var_export(misc::error_carga_imagen($imagen['error']), 1));
                    }
                }
                // </editor-fold>
            } else {
                trigger_error("No se pudo guardar correctamente el inmueble: " . var_export($exito, 1));
            }
        } else {
            trigger_error("no se pudo guardar correctamente el inmueble: " . var_export($exito, 1));
        }

        return $exito;
    }

    public function ver($id) {
        $data = array();
        // <editor-fold defaultstate="collapsed" desc="Queries">
        $query = "select
            inmueble.*,
            tipoinmueble.nombre tipo,
            estado.nombre as 'Estado',
            ciudad.nombre as 'Ciudad',
            usuario.id as 'usuario_id',
            usuario.login as 'usuario_login',
            usuario.nombre as 'usuario_nombre',
            usuario.apellido as 'usuario_apellido',
            usuario.email as 'usuario_email',
            usuario.foto as 'usuario_foto',
            usuario.telefono as 'usuario_telefono',
            usuario.telefono2 as 'usuario_telefono2'
         from inmueble
        inner join tipoinmueble on inmueble.tipo = tipoinmueble.id
        inner join estado on inmueble.estado = estado.id
        inner join ciudad on inmueble.ciudad = ciudad.id
        inner join usuario on inmueble.usuario = usuario.id
        where inmueble.id =" . $id;
        $query_imagenes = "select * from fotosinmueble where inmueble =" . $id . " order by tipofoto;";
        // </editor-fold>

        $data['inmueble'] = $this->dame_query($query);
        $data['imagenes'] = $this->dame_query($query_imagenes);
        return $data;
    }

    public function ultimos_inmuebles($limite = 5) {
        return $this->dame_query("
            select inmueble.id, inmueble.ubicacion, precio, fotos.url foto, ciudad.nombre ciudad, estado.nombre estado
                from inmueble 
                    inner join fotosinmueble fotos on fotos.inmueble = inmueble.id and fotos.tipofoto=1
                    inner join ciudad on inmueble.ciudad = ciudad.id
                    inner join estado on inmueble.estado = estado.id
                where inmueble.status=1
                order by rand() limit " . $limite);
    }

}

?>
